package cn.lefull.jpa.utils;


import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Tool {
    /**
     * 驼峰命名转化
     * @param s
     * @param isCls 是否是类名
     * @return
     */
    public static String tuofengChange(String s,boolean isCls){
        if(s==null)
            s="";
        s=s.trim();
        if(s.length()==0)
            return s;
         s=s.toLowerCase();
        String ret="";

        String sz[]=s.split("_");
        String temp="";
        String first="";
        for(int i=0;i<sz.length;i++){
            temp=sz[i];
            if(temp==null)temp="";
            temp=temp.trim();
            if(temp.length()==0) {
                continue;
            }
            first=temp.substring(0,1);


            if(i==0 && isCls==false) {//第一个数组
                    first=first.toLowerCase();
            }
            else{
                first=first.toUpperCase();
            }
            temp=first+temp.substring(1);
            ret+=temp;
        }
        return ret;
    }

    public static String tuofengChange(String s ){
        String ret="";

        return tuofengChange(s,false);
    }

    /**
     * 把驼峰转化为下划线
     * @param v
     * @return
     */
    public  static String TuofengToLine(String v){
        String ret="";
        v=dropNull(v);
        if(v.length()==0){
            return v;
        }
        for (int i=0;i<v.length();i++){
            char s=v.charAt(i);
            if(Character.isUpperCase(s)){
                ret=ret+"_"+(s+"").toLowerCase();
            }
            else
                ret=ret+(s+"");
        }
        if(ret.substring(0,1).equals("_")){
            ret=ret.substring(1);
        }
      //  System.out.println(ret);
        return ret;
    }


    public static void main(String[] args){
        String s="userSex";
        System.out.println(TuofengToLine(s));
    }

    public  static  String dropNull(String v){
        if(v==null)
            return "";
        return v.trim();
    }





    public static String UUID(){
        return UUID.randomUUID().toString().replace("-", "");
    }


    /**
     * 功能：判断字符串是否为日期格式
     *
     * @param strDate
     * @return
     */
    public static boolean isDate(String strDate) {
        Pattern pattern = Pattern
                .compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9]|[2][0-4]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
        Matcher m = pattern.matcher(strDate);
        if (m.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 是不是整数
     * @param str
     * @return
     */
    public static boolean isInteger(String str) {
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str).matches();
    }


    /**
     * 如果为空，则抛出null异常,如果是字符串，不为空，还做了trim()去空字符串
     * @param val 校验的值
     * @param errMsg null异常错误提示
     * @return
     */
//    public static  Object nullException(Object val,String errMsg){
//        if(val instanceof String){
//            String t=(String)val;
//            t=Tool.dropNull(t);
//            if(t.length()==0) {
//                throw CustomExceptionFactory.BusinessException(errMsg);
//            }
//            else
//                return t;
//        }
//        else{
//            if(val==null)
//                throw   CustomExceptionFactory.BusinessException(errMsg);
//            else
//                return val;
//        }
//
//    }

    /**
     * 验证是不是电话号码
     * @param phone
     * @return
     */
//    public static boolean isPhone(String phone) {
//        String regex = "^[1]([3-9][0-9]{1}|59|58|88|89)[0-9]{8}$";
//        if (phone.length() != 11) {
//            throw CustomExceptionFactory.BusinessException("手机号应为11位数");
//        } else {
//            Pattern p = Pattern.compile(regex);
//            Matcher m = p.matcher(phone);
//            boolean isMatch = m.matches();
//            if (!isMatch) {
//                throw CustomExceptionFactory.BusinessException("请填入正确的手机号");
//            }
//            return isMatch;
//        }
//    }

}
